package com.net.xpay.common.domain;

import com.net.common.domain.CommonDomain;
import com.net.xpay.common.enums.open.AuthStatus;
import com.net.xpay.common.enums.user.AlipayUserSignAuthRecordStatus;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.time.LocalDateTime;

/**
 * 签约授权一体化记录 新签约链路
 */
@Getter
@Setter
@NoArgsConstructor
public class AlipayUserSignAuthRecord extends CommonDomain {

    @ApiModelProperty(notes = "用户id")
    private Long userId;

    @ApiModelProperty(notes = "签约授权一体化事务号orderId 重新授权可变")
    private String bizNo;

    @ApiModelProperty(notes = "内部的和alipayUser表一致的事务号")
    private String isvBizId;

    @ApiModelProperty(notes = "签约单事务号")
    private String batchNo;

    @ApiModelProperty(notes = "支付宝账号")
    private String alipayNickName;

    @ApiModelProperty(notes = "联系人手机号码")
    private String contactMobile;

    @ApiModelProperty(notes = "联系人名称")
    private String contactName;

    @ApiModelProperty(notes = "联系人邮箱")
    private String contactEmail;

    @ApiModelProperty(notes = "签约授权一体化状态")
    private AlipayUserSignAuthRecordStatus status;

    @ApiModelProperty(notes = "签约失败原因")
    private String signFailureReason;

    @ApiModelProperty(notes = "授权提交时间")
    private LocalDateTime authSubmitTime;

    @ApiModelProperty(notes = "授权结束时间")
    private LocalDateTime authEndTime;

    @ApiModelProperty(notes = "签约提交时间")
    private LocalDateTime signSubmitTime;

    @ApiModelProperty(notes = "签约结束时间")
    private LocalDateTime signEndTime;

    @ApiModelProperty(notes = "授权状态 只管授权不管")
    private AuthStatus authStatus;

    @ApiModelProperty(notes = "authToken")
    private String authToken;

    @ApiModelProperty(notes = "refreshToken")
    private String refreshToken;

    @ApiModelProperty(notes = "令牌过期时间")
    private LocalDateTime expiresIn;

    @ApiModelProperty(notes = "刷新令牌过期时间")
    private LocalDateTime reExpiresIn;

    @ApiModelProperty(notes = "支付宝官方账号用户id 不是本系统的")
    private String alipayUserId;

    @ApiModelProperty(notes = "签约是否审核超时")
    private Integer isAuditTimeout;

}
